package main

import (
	"fmt"
	"time"
)

// 协程运行在相同的地址空间,因此访问共享内存时必须做好同步
// 协程通过通信来共享内存，而不推荐是通过共享内存来通信
func main() {
	go test1()
	go test2()
	for {

	}
}

// 定义一个全局的channel
var ch = make(chan int)

func test1() {
	myPrint("AAAAAA")
	// 向channel输入一个值
	ch <- 1
}

func test2() {
	// 监听一个channel输出值，没有值得话会阻塞
	<-ch
	myPrint("BBBBBB")
}

func myPrint(str string) {
	for _, data := range str {
		fmt.Printf("%c", data)
		time.Sleep(time.Second)
	}
}
